#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
服务清理脚本
用于清理已存在的WMS服务
"""

import os
import sys
import ctypes
from pathlib import Path

# 添加项目根目录到Python路径
project_root = Path(__file__).parent.parent
sys.path.insert(0, str(project_root))

from src.core.service_manager import ServiceManager

def is_admin():
    """检查是否以管理员权限运行"""
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False

def cleanup_service():
    """清理已存在的服务"""
    print("========================================")
    print("WMS Simple 服务清理工具")
    print("========================================")
    print()
    
    if not is_admin():
        print("❌ 需要管理员权限才能清理服务")
        print("请以管理员身份运行此脚本")
        return False
    
    # 创建服务管理器
    service_manager = ServiceManager(
        service_name="WMSSimpleService",
        display_name="WMS Simple 料位管理系统",
        description="WMS Simple 料位管理系统 - 自动化料位管理服务"
    )
    
    print("正在检查服务状态...")
    status_result = service_manager.get_service_status()
    
    if status_result["success"]:
        print(f"✅ 服务存在，状态: {status_result['status_text']}")
        
        # 如果服务正在运行，先停止
        if status_result["is_running"]:
            print("正在停止服务...")
            stop_result = service_manager.stop_service()
            if stop_result["success"]:
                print("✅ 服务停止成功")
            else:
                print(f"❌ 服务停止失败: {stop_result['message']}")
                return False
        
        # 卸载服务
        print("正在卸载服务...")
        uninstall_result = service_manager.uninstall_service()
        if uninstall_result["success"]:
            print("✅ 服务卸载成功")
            return True
        else:
            print(f"❌ 服务卸载失败: {uninstall_result['message']}")
            return False
    
    elif status_result.get("error_code") == "SERVICE_NOT_EXISTS":
        print("✅ 服务不存在，无需清理")
        return True
    else:
        print(f"❌ 检查服务状态失败: {status_result['message']}")
        return False

if __name__ == "__main__":
    try:
        success = cleanup_service()
        if success:
            print("\n🎉 服务清理完成！")
        else:
            print("\n❌ 服务清理失败！")
            sys.exit(1)
    except Exception as e:
        print(f"\n❌ 清理过程中发生错误: {e}")
        sys.exit(1) 